import axios from 'axios';
import { message } from 'antd';

// 创建 axios 实例
const request = axios.create({
  baseURL: process.env.REACT_APP_API_BASE_URL || '',
  timeout: 5000, // 请求超时时间
  headers: {
    'Content-Type': 'application/json;charset=utf-8'
  }
});

// 请求拦截器
request.interceptors.request.use(
  config => {
    const userInfoStr = sessionStorage.getItem('userinfo');
    if (userInfoStr) {
      try {
        const userInfo = JSON.parse(userInfoStr);
        //添加token
        if (userInfo.token) {
          config.headers.token = userInfo.token;
        }
        //添加用户 id 
        if (userInfo.user_id) {
          config.headers.id = userInfo.user_id;
        }
        // console.log('请求头:', config.headers);
      } catch (e) {
        console.error('解析userinfo失败:', e);
      }
    }
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);

// 响应拦截器
request.interceptors.response.use(
  response => {
    const res = response.data;
    if (res.code === 3 && res.msg === '下线通知') {
      sessionStorage.clear();
      //提示消息
      message.error('登录已失效，请重新登录', 2);
      // 延迟跳转，确保消息有足够时间显示
      setTimeout(() => {
        if (window.location.pathname !== '#/user/login') {
          sessionStorage.clear();
          window.location.replace('#/user/login');
          sessionStorage.setItem('getback', 'Stale-Dated');
        }
      }, 1500);
    }

    return res;
  },
  error => {
    console.error('请求错误:', error);
    if (!error.response) {
      message.error('网络错误，请检查网络连接');
    }
    else if (error.response.status === 401) {
      message.error('暂未未授权', 2);
      // 同样添加延迟
      setTimeout(() => {
        if (window.location.pathname !== '#/user/login') {
          sessionStorage.clear();
          window.location.replace('#/user/login');

        }
      }, 1500);
    }

    return Promise.reject(error);
  }
);

export default request;